package fiuba.algo3.tp2;

import java.lang.Math;

public class Terremoto extends Catastrofe {

	private Mapa mapa;

	public Terremoto(Coordenada puntoDeCreacion) {
		super(puntoDeCreacion, 0, 0);
		this.mapa = mapa.getInstance();
	}

	public void iniciarCatastrofe() {
		recorrerParaAplicarCatastrofe();
	}

	private void recorrerParaAplicarCatastrofe() {
		Coordenada epicentro = this.puntoDeCreacion;
		for (int i = 0; i < this.mapa.devolverTamanio(); i++) {
			for (int j = 0; j < this.mapa.devolverTamanio(); j++) {
				Hectarea hectareaActual = this.mapa.getMapaCoordenado()[i][j];
				Coordenada coordenadaActual = new Coordenada(i,j);
				if (hectareaActual.tieneUnEdificable()){
					int porcentajeDeDanio = calcularPorcentajeDeDanio(epicentro, coordenadaActual);
					//System.out.println(porcentajeDeDanio);
					this.mapa.getMapaCoordenado()[i][j].aplicarDanioPorTerremoto(porcentajeDeDanio);
				}
			}
		}	
	}

	private int calcularPorcentajeDeDanio(Coordenada epicentro, Coordenada coordenadaActual) {
	//Realizo el modulo para saber la distancia (en hectareas) de una coordenada a la otra
		
		int termino1 = epicentro.obtenerFila() - coordenadaActual.obtenerFila();
		int termino2 = epicentro.obtenerColumna() - coordenadaActual.obtenerColumna();
		double distanciaEntreCoordenadas = Math.sqrt(Math.pow(termino1, 2) + Math.pow(termino2, 2));
		int distanciaEntreCoordenadasRedondeada = (int) Math.round(distanciaEntreCoordenadas);
		
		//Dato del enunciado
		double porcentajeDeDanio = 100 - (1.5*distanciaEntreCoordenadasRedondeada); 
		int porcentajeDeDanioRedondeado = (int) Math.round(porcentajeDeDanio);
		//System.out.println(porcentajeDeDanioRedondeado);
		
		return porcentajeDeDanioRedondeado;
	}
}